package org.fatewa.engine.advice.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 指定 PO 字段在返回时是否参与处理
 * 有了该注解的加持，可以进一步提升 {@link org.fatewa.engine.genius.annotations.Export} 注解接口的灵活程度
 *
 * @author fatewa
 * @since Rayquaza 1.x
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Ignore {
    /**
     * 指定为 true 时，GET 返回数据时会忽略对应字段
     *
     * @return 是否跳过字段处理
     */
    boolean get() default false;

    /**
     * 指定为 true 时，POST 处理时会跳过
     *
     * @return 是否跳过字段处理
     */
    boolean post() default false;

    /**
     * 指定为 true 时，PATCH 处理时会跳过
     *
     * @return 是否跳过字段处理
     */
    boolean patch() default false;

    /**
     * 指定为 true 时，PUT 处理时会跳过
     *
     * @return 是否跳过字段处理
     */
    boolean put() default false;
}
